package com.example.demo;

import lombok.Data;

import java.io.Serializable;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-06-06
 * Time: 16:54
 */

/**
 *  统一的返回对象实现序列化接口
 */
@Data
public class AjaxResult implements Serializable {

    private int code;
    private String msg;
    private Object data;

    // static 方便调用

    /**
     *
     * @param data 只设置 data
     */
    public static AjaxResult success(Object data) {
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.setCode(200); // 成功后状态码固定位200
        ajaxResult.setMsg(""); // 成功后无需返回信息
        ajaxResult.setData(data); // 设置数据
        return ajaxResult;
    }

    /**
     * 提供一种可以成功后返回数据和信息的方法
     * @param data 数据
     * @param msg 信息
     */
    public static AjaxResult success(Object data, String msg) {
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.setCode(200);
        ajaxResult.setMsg(msg);
        ajaxResult.setData(data);
        return ajaxResult;
    }

    /**
     *  异常时返回的失败对象
     */
    public static AjaxResult fail(Integer code, String msg) {
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.setCode(code); // 设置错误状态码返回
        ajaxResult.setMsg(msg); // 返回错误信息
        ajaxResult.setData(""); // 错误时信息为空
        return ajaxResult;
    }


    public static AjaxResult fail(Integer code, String msg, Object data) {
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.setCode(code); // 设置错误状态码返回
        ajaxResult.setMsg(msg); // 返回错误信息
        ajaxResult.setData(data); // 错误时信息为空
        return ajaxResult;
    }

}
